import axios from 'axios'
import { Message } from 'element-ui'
import store from '@/store'
import { getToken } from '@/utils/auth'
import { service_route, oauth } from '@/api/config/const'

// 创建一个 axios 实例
const service = axios.create({
  baseURL: service_route.baseURL, // api的base_url,也就是ms服务网关的url
  timeout: 5000 // 设置请求的超时时间
})

// 请求的拦截器
service.interceptors.request.use(config => {
  // 在请求发送之前进行处理,根据登录的状态向请求头中加入token
  if (store.getters.token) {
    // 登陆的话就在请求头中填入token
    config.headers['Authorization'] = getToken() // 让每个请求携带token-- Authorization为自定义header 请根据实际情况自行修改
  } else {
    // 如果没登录,也就是getToken()获取不到token的话就要填入尝试登录的 client:clientSecret
    config.headers['Authorization'] = oauth.client
  }
  return config
}, error => {
  // 在请求发生错误的时候进行处理
  Promise.reject(error)
})

// 响应的拦截器
service.interceptors.response.use(
  response => {
    // 权限不足的拦截提示
    if (response.data.code === 1) {
      const data = response.data.data
      if (data['10004']) {
        Message({
          message: data['10004'],
          type: 'warning'
        })
      }
    }
    return response
  },
  error => {
    // 200 以外响应码的提示
    Message({
      message: error.message,
      type: 'error',
      duration: 5 * 1000
    })
    return Promise.reject(error)
  })

export default service
